﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.IO.Compression;

namespace NSEEOD_downloader
{
    public class Utils
    {
        public static string GetString(object obj)
        {
            if (null == obj)
            {
                return "";
            }
            return obj.ToString();
        }

        public static void NotImplemented()
        {
            MessageBox.Show("Not implemented.");
        }

        public static string GetLinkFromFormatString(string formatStr, DateTime time)
        {
            int parseStart = -1;
            while ((parseStart = formatStr.IndexOf('[')) >= 0)
            {
                int parseEnd = formatStr.IndexOf(']', parseStart);
                if (parseEnd <= 0)
                {
                    return "";
                }
                string format = formatStr.Substring(parseStart, parseEnd - parseStart + 1);
                string DateTimeParse = format.TrimStart('['); DateTimeParse = DateTimeParse.TrimEnd(']');
                string ConvertedStr = time.ToString(DateTimeParse).ToUpper(); //NSE does not like lower case date data 
                formatStr = formatStr.Replace(format, ConvertedStr);
            }
            return formatStr;
        }

        

        public static int ReadAllBytesFromStream(GZipStream stream, ref string destination)
        {
            // Use this method is used to read all bytes from a stream.
            int offset = 0;
            int totalCount = 0;
            byte[] buffer = new byte[100];
            StringBuilder str = new StringBuilder();
            while (true)
            {
                int bytesRead = stream.Read(buffer, offset, 100);
                if (bytesRead == 0)
                {
                    break;
                }
                str.Append(System.Text.Encoding.ASCII.GetString(buffer));
                offset += bytesRead;
                totalCount += bytesRead;
            }
            destination = str.ToString();
            return totalCount;
        } 
    }
}
